When user data stored in a memory is read out from the memory, there is a case where the user data is changed into a different value from an original value or if data transmitted from a transmitting device is received in a receiving device, there is a case where the received data is changed into a value different from the original value.
In order to address to the above problems, a method that the user data is error-correction encoded to generate parity data and the user data and the parity are managed as a pair is generally suggested. As the error correction code, for example, a BCH code or a RS (Reed-Solomon) code is used.